#include<bits/stdc++.h>
#define sd(n) scanf("%d",&n) 
#define sld(n) scanf("%lld",&n)
#define pd(n) printf("%d", (n))
#define pld(n) printf("%lld", n)
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define fi first
#define se second
const int N=2e5;
#define INF 0x7fffffff
typedef long long int ll;
using namespace std;
//----------------------------------------------------------------------------//
int n,m,k;
//map<char,int> cnt1,cnt2;
void solve()
{
	sd(n);sd(m);sd(k);
	//char t;
	// for(int i=0;i<n;i++)
	// {
	// 	cin>>t;
	// 	cnt1[t]++;
	// }
	// for(int i=0;i<m;i++)
	// {
	// 	cin>>t;
	// 	cnt2[t]++;
	// }
	string s1,s2;
	cin>>s1>>s2;
	sort(all(s1));
	sort(all(s2));
	int l=0,r=0,t=0;
	bool ok=false;
	while(l<n&&r<m)
	{
		if(s1[l]<s2[r])
		{
			if(ok)
			{
				cout<<s1[l];
				l++;
				ok=false;
				t=1;
			}
			else
			{
				if(t<k)
				{
					cout<<s1[l];
					l++;
					t++;
				}
				else
				{
					cout<<s2[r++];t=1;
					ok=true;
				}
			}
		}

		else if(s1[l]>=s2[r])
		{
			if(!ok)
			{
				cout<<s2[r];
				r++;
				ok=true;
				t=1;
			}
			else
			{
				if(t<k)
				{
					cout<<s2[r];
					r++;
					t++;
				}
				else
				{
					cout<<s1[l];
					l++;
					t=1;
					ok=false;
				}
			}
		}
	}
	puts("");
}

int main()
{
	int T;
	sd(T);
	while (T--)
	{
		solve();
	}
	return 0;
}